package Alibaba;

import common.ListNode;

import java.util.List;

/**
 * @author zhangmin
 * @create 2022-01-30 13:18
 *
 * 61. 旋转链表
 * 给你一个链表的头节点 head ，旋转链表，将链表每个节点向右移动 k 个位置。
 * 计算出链表的长度n，然后将链表的尾部连接到头上，接着从头开始找到第n-k%n的位置然后断开链表，即可找到头结点返回
 */
public class rotateRight61 {


    public ListNode rotateRight(ListNode head, int k) {
        if (head==null){
            return null;
        }
        ListNode p=head;
        int count=1;
        while (p.next!=null){
            p=p.next;
            count++;
        }
        int indexK=k%count;
        if (indexK==0) return head;
        p.next=head;
        int findIndex=count-indexK-1;
        while (findIndex>0){
            findIndex--;
            head=head.next;
        }
        ListNode newhead=head.next;
        head.next=null;
        return newhead;
    }
}
